home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / basic / mon_rb.com / MONITOR.BAS (.txt) next >
Encoding:
GW-BASIC  |  1982-12-04  |  7.1 KB  |  238 lines

  1. 10  REM MONITOR
  2. 15  ZTITLE$="Program Title Here"
  3. 20  GOTO 30
  4. 25  END:REM Put Program Exit Here
  5. 30  ZHELPSW%=1:ZCSW%=0:ZW%=78
  6. 35  SCREEN 0,0,0:WIDTH 80:CLS:OPTION BASE 1
  7. 40  KEY OFF
  8. 45  ZB1$=STRING$(3,219):ZB2$=STRING$(79,219)
  9. 75  ZTOF$=CHR$(12):ZENT$="("+CHR$(17)+ZSHL$+ZSLR$+")":ZTFAC=425
  10. 80  DIM ZMENU$(15),ZMLEN%(15)
  11. 85  ZE$=" Not Available at this Point":ZDT$=DATE$:ZDT$=LEFT$(ZDT$,2)+"/"+MID$(ZDT$,4,2)+"/"+RIGHT$(ZDT$,2)
  12. 90  Z=6:GOSUB 100:GOTO 10000
  13. 95  REM Branch Table
  14. 100  LOCATE ,,0:ON Z GOSUB 115,675,740,750,785,805,830,850,860,880,905,915,925,935,945,975,985,1000,1015,1040,1050,1060,1070,1085,1095,1105,1120,1125,1135
  15. 105  RETURN
  16. 110  REM  ZIN
  17. 115  ZD$="":ZN=0:GOSUB 1120:GOSUB 1125:ZR%=1:ZLEN%=VAL(ZFLD2$):ZTYPE%=VAL(MID$(Z$,ZPTR2%+1)):ZLEND%=LEN(ZFLD1$)
  18. 120  LOCATE 23,1:PRINT TAB(79);" ":LOCATE 23,1
  19. 125  PRINT ZFLD1$;" [";
  20. 130  IF ZPL$="" THEN 150
  21. 135  REM Pre-loaded input
  22. 140  PRINT ZPL$;STRING$(ZLEN%-LEN(ZPL$),".");"]":ZD$=ZPL$:ZCT%=LEN(ZPL$):LOCATE 23,ZLEND%+3+ZCT%,1:ZCPTR%=ZCT%+1:GOTO 170
  23. 145  REM No Preload
  24. 150  PRINT STRING$(ZLEN%,".");"]":LOCATE 23,ZLEND%+3,1
  25. 155  ZCT%=0:ZCPTR%=1
  26. 160  REM  ZIN Inkey
  27. 165  LOCATE ,,1
  28. 170  ZCH$=INKEY$:IF ZCH$="" THEN 170
  29. 175  Z%=ASC(ZCH$):ZL%=LEN(ZCH$):IF Z%>126 THEN 170
  30. 180  REM  Exten'd or Edit Char. Trap
  31. 185  IF ZL%>1 THEN 425
  32. 190  REM  Control Char. Trap
  33. 195  IF Z%<32 THEN 285
  34. 200  REM Test Overstrike
  35. 205  IF ZINS%=1 THEN 265
  36. 210  IF ZCPTR%-1<ZCT% THEN 640
  37. 215  REM  Test GT max
  38. 220  ZCT%=ZCT%+1:IF ZCT%>ZLEN% THEN ZCT%=ZCT%-1:GOTO 1140
  39. 225  ZCPTR%=ZCT%+1
  40. 230  IF ZCT%=1 THEN 240 ELSE 265
  41. 235  REM Special First Char.
  42. 240  IF (ZHELPSW%=1) AND (ZCH$="?") THEN ZR%=5:PRINT ZCH$;:GOTO 660
  43. 245  IF ZCH$="?" THEN PRINT ZCH$:Z=26:GOSUB 100:GOTO 115
  44. 250  IF ZCH$="+" THEN ZR%=2:PRINT ZCH$;:GOTO 660
  45. 255  GOTO 265
  46. 260  REM  Normal Process
  47. 265  IF (Z%>96) AND (Z%<123) AND (ZCSW%=1) THEN ZCH$=CHR$(Z%-32)
  48. 270  IF ZINS%=1 THEN 550
  49. 275  PRINT ZCH$;:ZD$=ZD$+ZCH$:GOTO 170
  50. 280  REM  Proc. Ctrl Char.
  51. 285  ZCTL%=Z%
  52. 290  REM ESC=abort
  53. 295  IF ZCTL%=27 THEN ZPL$="":GOTO 115
  54. 300  IF ZCTL%=3 THEN STOP:GOTO 115
  55. 305  IF ZCTL%=9 THEN 630
  56. 310  IF ZCTL%<>13 THEN 375
  57. 315  REM  Proc. c/r
  58. 320  IF ZCT%=0 THEN ZR%=3:GOTO 660
  59. 325  IF ZTYPE%=1 THEN 665
  60. 330  IF ZD$="0" THEN 665
  61. 335  IF ZTYPE%=2 THEN 340 ELSE 350
  62. 340  ZT=VAL(ZD$):IF ZT=0 THEN 355
  63. 345  ZN=VAL(ZD$):IF ZN<> INT(ZN) THEN 355 ELSE 665
  64. 350  ZN=VAL(ZD$):IF ZN=0 THEN 360 ELSE 665
  65. 355  Z=21:GOTO 365
  66. 360  Z=22
  67. 365  ZSAVE$=Z$:GOSUB 100:Z$=ZSAVE$:GOTO 115
  68. 370  REM  proc. B/U
  69. 375  IF ZCTL%=24 THEN ZR%=2:GOTO 660
  70. 380  REM  Proc. BS
  71. 385  IF ZCTL%=8 THEN 395 ELSE 415
  72. 390  REM  Short BS
  73. 395  IF ZCT%=0 THEN 1140
  74. 400  IF ZCPTR%-1<ZCT% THEN 575
  75. 405  ZCT%=ZCT%-1:ZCPTR%=ZCPTR%-1:LOCATE 23,ZLEND%+3+ZCT%:PRINT ".";:LOCATE 23,ZLEND%+3+ZCT%:ZD$=LEFT$(ZD$,LEN(ZD$)-1):GOTO 170
  76. 410  REM  Pass Control Character
  77. 415  ZR%=4:ZN=ZCTL%:ZD$=" ":GOTO 665
  78. 420  REM Proc Ext'd Char.
  79. 425  ZXT%=ASC(MID$(ZCH$,2)):IF ZXT%=72 THEN ZR%=2:GOTO 660
  80. 430  REM ZIN Inner-field Editing
  81. 435  LOCATE ,,0:ZBR%=ZXT%-74:IF ZBR%<=0 THEN 445
  82. 440  ON ZBR% GOTO 470,445,485,445,500,445,445,530,575
  83. 445  GOSUB 1165:IF ZXT%=15 THEN 600
  84. 450  IF ZXT%=117 THEN 610
  85. 455  IF (ZXT%>58) AND (ZXT%<69) THEN 620
  86. 460  GOTO 170
  87. 465  REM Curs left
  88. 470  IF ZCPTR%=1 THEN 1140
  89. 475  GOSUB 1165:ZCPTR%=ZCPTR%-1:GOTO 1145
  90. 480  REM Curs right
  91. 485  IF ZCPTR%=ZCT%+1 THEN 1140
  92. 490  GOSUB 1165:ZCPTR%=ZCPTR%+1:GOTO 1145
  93. 495  REM END Key
  94. 500  Z%=23:Z=11:GOSUB 100:LOCATE 23,1:PRINT "Press END key again to End, space bar to continue [.]":LOCATE 23,52
  95. 505  ZCH9$=INKEY$:IF ZCH9$="" THEN 505
  96. 510  ZL%=LEN(ZCH9$):IF ZL%<2 THEN 115
  97. 515  ZXT%=ASC(MID$(ZCH9$,2)):IF ZXT%=79 THEN Z=15:GOSUB 100
  98. 520  GOTO 115
  99. 525  REM INS Toggle
  100. 530  IF ZCT%=ZLEN%-1 THEN 1140
  101. 535  IF ZINS%=0 THEN GOSUB 1155 ELSE GOSUB 1165
  102. 540  GOTO 170
  103. 545  REM INS Char.
  104. 550  IF ZCT%=ZLEN% THEN 1140
  105. 555  ZDL$=LEFT$(ZD$,ZCPTR%-1):ZDR$=MID$(ZD$,ZCPTR%):ZDR$=ZCH$+ZDR$
  106. 560  ZD$=ZDL$+ZDR$:ZCT%=ZCT%+1:ZCPTR%=ZCPTR%+1
  107. 565  PRINT ZDR$;STRING$(ZLEN%-LEN(ZD$),".");"]":GOTO 1145
  108. 570  REM Delete Char
  109. 575  IF ZCT%=ZCPTR%-1 THEN 1140
  110. 580  GOSUB 1165:ZDL$=LEFT$(ZD$,ZCPTR%-1):ZDR$=MID$(ZD$,ZCPTR%+1)
  111. 585  ZD$=ZDL$+ZDR$:ZCT%=ZCT%-1:PRINT ZDR$;".":GOTO 1145
  112. 590  GOTO 170
  113. 595  REM Back Tab
  114. 600  GOSUB 1165:ZCPTR%=1:GOTO 1145
  115. 605  REM Ctrl-End
  116. 610  GOSUB 1165:ZCT%=ZCPTR%-1:ZD$=LEFT$(ZD$,ZCT%):LOCATE 23,ZLEND%+2+ZCPTR%:PRINT STRING$(ZLEN%-LEN(ZD$),".");"]":GOTO 1145
  117. 615  REM Pass Function Keys
  118. 620  ZCTL%=ZXT%:GOTO 415
  119. 625  REM Forw'd Tab
  120. 630  GOSUB 1165:ZCPTR%=ZCT%+1:GOTO 1145
  121. 635  REM Overstrike
  122. 640  ZDL$=LEFT$(ZD$,ZCPTR%-1):IF ZCPTR%-1=0 THEN ZDL$=""
  123. 645  ZDR$=MID$(ZD$,ZCPTR%+1):IF ZCPTR%-1=ZCT% THEN ZDR$=""
  124. 650  ZD$=ZDL$+ZCH$+ZDR$:PRINT ZCH$;:ZCPTR%=ZCPTR%+1:GOTO 170
  125. 655  REM Common End
  126. 660  ZD$=" ":ZN=0:ZINS%=0
  127. 665  GOSUB 1165:ZPL$="":RETURN
  128. 670  REM ZMENU
  129. 675  GOSUB 1120:ZROWX%=VAL(ZFLD1$):GOSUB 1125:ZCOL%=VAL(ZFLD2$):LOCATE ZROWX%,ZCOL%:ZLTST%=LEN(Z$)
  130. 680  FOR ZMNO%=1 TO 15:ZPTR1%=ZPTR2%:IF ZPTR2%=0 THEN 705
  131. 685  IF ZPTR2%>=ZLTST% THEN 705
  132. 690  GOSUB 1125
  133. 695  IF ZMNO%<10 THEN ZPD$=" " ELSE ZPD$=""
  134. 700  PRINT TAB(ZCOL%);ZPD$;ZMNO%;"- ";ZFLD2$:NEXT ZMNO%
  135. 705  PRINT:IF ZMNO%>9 THEN ZX$="2" ELSE ZX$="1"
  136. 710  ZSAVE$=Z$:Z$="     Enter Selection,"+ZX$+",2":Z=1:GOSUB 100:ON ZR% GOTO 715,730,730,730,730
  137. 715  ZL=1:ZH=ZMNO%-1:Z$=ZSAVE$:Z=10:GOSUB 100
  138. 720  ON ZV% GOTO 730,725,725
  139. 725  ZSAVE$=Z$:ZD$=STR$(ZN):Z=20:GOSUB 100:Z$=ZSAVE$:GOTO 675
  140. 730  RETURN
  141. 735  REM ZTCLR
  142. 740  FOR Z%=1 TO 15:ZMENU$(Z%)="":NEXT Z%:RETURN
  143. 745  REM ZTMENU
  144. 750  ZPTR2%=0:ZPDL$=STRING$(((78-ZW%)/2)," "):ZPR%=(78-ZW%)/2:LOCATE ZROW%,1:FOR ZMNO%=1 TO 15:ZFLD$=ZMENU$(ZMNO%):IF ZPTR2%=LEN(Z$) THEN 775
  145. 755  ZPTR1%=ZPTR2%:GOSUB 1125:ZMD$=ZFLD2$:ZPTR1%=ZPTR2%:GOSUB 1125
  146. 760  ZTYPE%=VAL(ZFLD2$):ZMLEN%(ZMNO%)=ZTYPE%:IF ZFLD$="" THEN ZFLD$="["+STRING$(ZTYPE%,".")+"]"
  147. 765  ZCOL%=LEN(ZFLD$):IF ZMNO%<10 THEN ZPD$=" " ELSE ZPD$=""
  148. 770  PRINT ZPDL$;ZPD$;STR$(ZMNO%)+". ";ZMD$;TAB(80-ZCOL%-2-ZPR%);ZFLD$:NEXT ZMNO%
  149. 775  RETURN
  150. 780  REM ZUPTMENU
  151. 785  ZPTR1%=ZMLEN%(ZY%):ZPR%=(78-ZW%)/2:LOCATE (ZROW%+ZY%-1),(80-ZPTR1%-4-ZPR%):PRINT TAB(79)
  152. 790  ZMENU$(ZY%)=ZD$
  153. 795  ZCOL%=LEN(ZMENU$(ZY%)):LOCATE (ZROW%+ZY%-1),(80-ZCOL%-2-ZPR%):PRINT ZMENU$(ZY%);TAB(79):RETURN
  154. 800  REM  ZBOX
  155. 805  PRINT ZB2$:PRINT ZB1$;CHR$(221);TAB(76);CHR$(222);ZB1$
  156. 810  PRINT ZB1$;CHR$(221);TAB(41-(LEN(ZTITLE$)/2));ZTITLE$;TAB(76);CHR$(222);ZB1$
  157. 815  PRINT ZB1$;CHR$(221);TAB(76);CHR$(222);ZB1$:PRINT ZB2$:PRINT
  158. 820  RETURN
  159. 825  REM  ZLINE
  160. 830  LOCATE 1,1:COLOR 1
  161. 835  PRINT ZTITLE$;TAB(72);ZDT$:COLOR 7
  162. 840  RETURN
  163. 845  REM ZAOK
  164. 850  Z=13:GOSUB 100:Z$="All ok? Y or N,1,1":Z=1:GOSUB 100:Z=9:GOSUB 100:Z=14:GOSUB 100:RETURN
  165. 855  REM ZTESTYN
  166. 860  ZV%=3:IF (ZD$="Y") OR (ZD$="y") THEN ZV%=1
  167. 865  IF (ZD$="N") OR (ZD$="n") THEN ZV%=2
  168. 870  RETURN
  169. 875  REM ZNLIMIT
  170. 880  ZV%=1:IF ZL>ZN THEN ZV%=2
  171. 885  IF ZH<ZN THEN ZV%=3
  172. 890  IF (ZCTL%<>0) AND (ZR%>3) THEN ZV%=4
  173. 895  RETURN
  174. 900  REM  ZSCREEN
  175. 905  FOR Z%=Z% TO 24:LOCATE Z%,1:PRINT TAB(80);:NEXT Z%:RETURN
  176. 910  REM  ZBEEP
  177. 915  SOUND 50,3:RETURN
  178. 920  REM ZUP
  179. 925  ZCSW%=1:RETURN
  180. 930  REM ZMIX
  181. 935  ZCSW%=0:RETURN
  182. 940  REM  ZEND
  183. 945  CLS:Z=6:GOSUB 100
  184. 950  LOCATE 10,32,0:PRINT "VARPTR";STRING$(17,"SOUND");"COLOR"
  185. 955  LOCATE ,32:PRINT "CALL";"   End Program   ";"CALL"
  186. 960  LOCATE ,32:PRINT "CLS";STRING$(17,"SOUND");"'"
  187. 965  LOCATE 21,1,0:GOTO 25
  188. 970  REM  ZCTR
  189. 975  GOSUB 1030:GOTO 1025
  190. 980  REM  ZCTRR
  191. 985  GOSUB 1030
  192. 990  COLOR 8,7:GOTO 1025
  193. 995  REM  ZCTRB
  194. 1000  GOSUB 1030
  195. 1005  COLOR 23:GOTO 1025
  196. 1010  REM  ZCTRU
  197. 1015  GOSUB 1030
  198. 1020  COLOR 1
  199. 1025  PRINT ZFLD2$;:COLOR 7:PRINT TAB(79);:RETURN
  200. 1030  LOCATE 23,1:PRINT:GOSUB 1120:ZFLD2$=MID$(Z$,ZPTR1%+1):Z%=VAL(ZFLD1$):LOCATE Z%,,0:PRINT TAB((80-LEN(ZFLD2$))/2);:RETURN
  201. 1035  REM ZERRINV
  202. 1040  Z$="24,"+ZD$+" Is Invalid":GOTO 1110
  203. 1045  REM ZERRINT
  204. 1050  Z$="24,"+ZD$+" Is Not an Integer Number":GOTO 1110
  205. 1055  REM ZERRNUM
  206. 1060  Z$="24,"+ZD$+" Is Not Numeric":GOTO 1110
  207. 1065  REM ZERRCTRL
  208. 1070  IF ZCTL%>26 THEN ZDS2%=ZCTL%-58:ZDS$="F"+MID$(STR$(ZDS2%),2) ELSE ZDS$="Control "+CHR$(ZCTL%+64)
  209. 1075  Z$="24,Function Key = "+ZDS$+ZE$:GOTO 1110
  210. 1080  REM ZERRENT
  211. 1085  Z$="24,ENTER-Only Entry "+ZE$:GOTO 1110
  212. 1090  REM ZERRBACK
  213. 1095  Z$="24,Field Backup Entry "+ZE$:GOTO 1110
  214. 1100  REM ZERRHELP
  215. 1105  Z$="24,HELP "+ZE$
  216. 1110  Z=17:GOSUB 100:Z=12:GOSUB 100:ZY=2:Z=29:GOSUB 100:Z%=24:Z=11:GOSUB 100:RETURN
  217. 1115  REM Routines
  218. 1120  ZPTR1%=INSTR(1,Z$,","):ZFLD1$=LEFT$(Z$,ZPTR1%-1):RETURN
  219. 1125  ZPTR2%=INSTR(ZPTR1%+1,Z$,","):ZFLD2$=MID$(Z$,ZPTR1%+1,ZPTR2%-ZPTR1%-1):RETURN
  220. 1130  REM ZDELAY
  221. 1135  FOR ZX=1 TO ZY*ZTFAC:NEXT ZX:RETURN
  222. 1140  Z=12:GOSUB 100:GOTO 165
  223. 1145  LOCATE 23,ZLEND%+2+ZCPTR%,1:GOTO 170
  224. 1150  REM INS On
  225. 1155  ZINS%=1:LOCATE ,,,4,12:RETURN
  226. 1160  REM INS Off
  227. 1165  ZINS%=0:LOCATE ,,,11,12:RETURN
  228. 9000  REM Save Program
  229. 9010  ZPROG$="program name"
  230. 9020  PRINT "Saving B:"+ZPROG$+".BAS"
  231. 9030  SAVE "B:"+ZPROG$
  232. 9040  PRINT "Saving B:"+ZPROG$+".S"
  233. 9050  SAVE "B:"+ZPROG$+".S",A
  234. 9060  RETURN
  235. 9090  REM Memory Display
  236. 9100  CLS:LOCATE 10,1,0:PRINT TAB(32);"Memory Statistics":PRINT:PRINT TAB(27);"Remaining Memory:  ";FRE(0):PRINT:PRINT TAB(27);"Program Length:    ";61529-FRE(0):RETURN
  237. 10000  REM Begin Program Here
  238.